iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
Software Development

Unity遊戲開發與實踐-BlueRemedy內容分享系列 第 19

[Day19]尖刺怪-死亡與復活

  • 分享至 

  • xImage
  •  

終於來到了尖刺怪的第三篇,也就是尖刺怪的最終篇,如標題今天要介紹的是尖刺怪的死亡與復活,那廢話不多說直接進入正題吧!

先前在介紹怪物的時候有說到,當怪物死亡的時候會生成小水滴,所以我們需要先做一個小水滴的Prefab,這樣就可以在怪物死亡的當下生成Waterdrop。那首先我們在小水滴的Inspector上放了兩個Collider,分別是CircleCollider2D和BoxCollider2D。

  • CircleCollider2D,用來判斷主角是否經過小水滴,由於是作為範圍判斷,所以要將Is Trigger設為true
  • BoxCollider2D,和地板碰撞,防止小水滴落到地圖之外

https://ithelp.ithome.com.tw/upload/images/20200914/20130414Z4vE2NnOus.jpg

接著在怪物的物件下新增一個子物件,名為dropInitPoint,是為了設定小水滴生成的位置,所以要調整它的Position,讓水滴的生成位置能夠在怪物的正下方。
https://ithelp.ithome.com.tw/upload/images/20200914/20130414ApPRRqLRo6.jpg

我們開始進入到程式,一樣要先宣告變數,如下圖:

  • 7~12行是關於怪物身上的元件,以及怪物死亡程式中會使用到的物件宣告
  • Awake Settings裡的bornTime,設定間隔多少時間怪物才會復活
  • Health Settings,設定怪物的血量
  • Resurrection Settings,關於怪物復活的相關變數設定

https://ithelp.ithome.com.tw/upload/images/20200914/20130414vxOYbIFKY5.jpg

再來在怪物死亡的腳本中加入一個Dead函式,首先使用Instantiate來生成小水滴,而這個小水滴身上還會掛另外一個腳本,叫做WaterDrop,我們在這裡跟它說WaterDrop裡的enemy_dead就是我現在正在編寫的怪物死亡腳本,之後將小水滴設為怪物的子物件,還有小水滴圖片的方向也會和怪物本身一樣,最後就是記得將怪物物件隱藏。
https://ithelp.ithome.com.tw/upload/images/20200914/201304142ylyljRvlO.jpg

進到WaterDrop的腳本,加上OnTriggerEnter,當主角經過小水滴的時候,要呼叫主角身上的ModifyWaterEnergy函式,讓主角的水量增加,此時小水滴就會消失,因此將isWaterdropFade設為true,在最後Destroy小水滴的物件。
https://ithelp.ithome.com.tw/upload/images/20200914/20130414M06B9iuOA9.jpg

在進到怪物死亡的腳本,現在要寫復活相關的設定,怪物復活需要等待一些時間,所以要使用前面所說的IEnumerator協程,當等待完復活的時間後,需要做一些設定,包含:

  • 把isDead設定為原來的false
  • 將因為怪物死亡而關掉的Collider再次打開
  • 設定怪物的Position為怪物的初始位置
  • SetActive(true),將怪物的物件再次顯示出來
  • 怪物的血量恢復到初始最大值
  • 播放怪物復活的動畫

https://ithelp.ithome.com.tw/upload/images/20200914/20130414FAdlV8wlCp.jpg

那我們需要再設定一個函式NewBaby來呼叫RebornAfterTime,並加bornTime放入參數裡面。
https://ithelp.ithome.com.tw/upload/images/20200914/20130414qSM0cUcLpx.jpg

最後由於我們原先的怪物復活設定,是需要主角已離開原本怪物位置至少30才會復活,所以我們把這個設定寫在Update裡面,先判斷怪物與主角的距離並存在diff變數裡面,若確認小水滴已經消失,而且如果怪物與主角的距離有大於等於30的時候就可以呼叫NewBaby的函式,然後再將isWaterdropFade變回false,這樣就可以完成怪物的死亡與復活功能囉!
https://ithelp.ithome.com.tw/upload/images/20200914/20130414e48dK1P1sJ.jpg

那麼尖刺怪的所有功能就已經全部介紹完畢囉!


上一篇
[Day18]尖刺怪-攻擊
下一篇
[Day20]怪物-繼承
系列文
Unity遊戲開發與實踐-BlueRemedy內容分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言